package com.diamond.webservice.util;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 日期字符串格式化工具类
 * @author 王丹梦
 */
public class MyDateUtil {
    private static SimpleDateFormat yyyyMM = new SimpleDateFormat("yyyyMM");
    private static SimpleDateFormat yyyyMMdd = new SimpleDateFormat("yyyyMMdd");
    private static SimpleDateFormat yyyysnotMM = new SimpleDateFormat("yyyy.MM");
    private static SimpleDateFormat yyyysnotMMsnotdd = new SimpleDateFormat("yyyy.MM.dd");
    private static SimpleDateFormat yyyyHengMM = new SimpleDateFormat("yyyy-MM");
    private static SimpleDateFormat yyyyYearMMMonth = new SimpleDateFormat("yyyy年MM月");
    private static SimpleDateFormat yyyyYearMMMonthddDay = new SimpleDateFormat("yyyy年MM月dd日");
    private static SimpleDateFormat yyyyM = new SimpleDateFormat("yyyyM");
    private static SimpleDateFormat yyMM = new SimpleDateFormat("yyMM");

    /**
     * 格式化各种形式的日期字符串，并输出指定形式的而字符串
     * @param s 待格式化的字符串
     * @param resultFormat  执行形式
     * @return  格式化后的字符串
     * @throws Exception
     */
    public static String formatDate(String s,SimpleDateFormat resultFormat){
        if(!"".equals(isyyyyMM(s,resultFormat))){
            return isyyyyMM(s,resultFormat);
        }else if(!"".equals(isyyyyMMdd(s,resultFormat))){
            return isyyyyMMdd(s,resultFormat);
        }else if(!"".equals(isyyyysnotMM(s,resultFormat))){
            return isyyyysnotMM(s,resultFormat);
        }else if(!"".equals(isyyyysnotMMsnotdd(s,resultFormat))){
            return isyyyysnotMMsnotdd(s,resultFormat);
        }else if(!"".equals(isyyyyHengMM(s,resultFormat))){
            return isyyyyHengMM(s,resultFormat);
        }else if(!"".equals(isyyyyYearMMMonth(s,resultFormat))){
            return isyyyyYearMMMonth(s,resultFormat);
        }else if(!"".equals(isyyyyYearMMMonthdd(s,resultFormat))){
            return isyyyyYearMMMonthdd(s,resultFormat);
        }else if(!"".equals(isyyyyM(s,resultFormat))){
            return isyyyyM(s,resultFormat);
        }else if(!"".equals(isyyMM(s,resultFormat))){
            return isyyMM(s,resultFormat);
        } else{
            System.out.println("不可解析的日期字符串");
            return "";
        }
    }

    /**
     * 格式化形如"yyyyM"的字符串并输出指定格式
     * @param s 待格式化的字符串
     * @param resultFormat  指定格式
     * @return
     */
    public static String isyyyyM(String s,SimpleDateFormat resultFormat){
        Date parse = null;
        try {
            parse = yyyyM.parse(s);
        }catch (Exception e){
            return "";
        }
        return resultFormat.format(parse);
    }

    /**
     * 格式化形如"yyyyMM"的字符串并输出指定格式
     * @param s 待格式化的字符串
     * @param resultFormat  指定格式
     * @return
     */
    public static String isyyyyMM(String s,SimpleDateFormat resultFormat){
        Date parse = null;
        try {
            parse = yyyyMM.parse(s);
        }catch (Exception e){
            return "";
        }
        return resultFormat.format(parse);
    }

    /**
     * 格式化形如"yyMM"的字符串并输出指定格式
     * @param s 待格式化的字符串
     * @param resultFormat  指定格式
     * @return
     */
    public static String isyyMM(String s,SimpleDateFormat resultFormat){
        Date parse = null;
        try {
            parse = yyMM.parse(s);
        }catch (Exception e){
            return "";
        }
        return resultFormat.format(parse);
    }

    /**
     * 格式化形如"yyyy-MM"的字符串并输出指定格式
     * @param s 待格式化的字符串
     * @param resultFormat  指定格式
     * @return
     */
    public static String isyyyyHengMM(String s,SimpleDateFormat resultFormat){
        Date parse = null;
        try {
            parse = yyyyHengMM.parse(s);
        }catch (Exception e){
            return "";
        }
        return resultFormat.format(parse);
    }

    /**
     * 格式化形如"yyyy.MM"的字符串并输出指定格式
     * @param s 待格式化的字符串
     * @param resultFormat  指定格式
     * @return
     */
    public static String isyyyysnotMM(String s,SimpleDateFormat resultFormat){
        Date parse = null;
        try {
            parse = yyyysnotMM.parse(s);
        }catch (Exception e){
            return "";
        }
        return resultFormat.format(parse);
    }

    /**
     * 格式化形如"yyyy.MM.dd"的字符串并输出指定格式
     * @param s 待格式化的字符串
     * @param resultFormat  指定格式
     * @return
     */
    public static String isyyyysnotMMsnotdd(String s,SimpleDateFormat resultFormat){
        Date parse = null;
        try {
            parse = yyyysnotMMsnotdd.parse(s);
        }catch (Exception e){
            return "";
        }
        return resultFormat.format(parse);
    }

    /**
     * 格式化形如"yyyyMMdd"的字符串并输出指定格式
     * @param s 待格式化的字符串
     * @param resultFormat  指定格式
     * @return
     */
    public static String isyyyyMMdd(String s,SimpleDateFormat resultFormat){
        Date parse = null;
        try {
            parse = yyyyMMdd.parse(s);
        }catch (Exception e){
            return "";
        }
        return resultFormat.format(parse);
    }

    /**
     * 格式化形如"yyyy年MM月"的字符串并输出指定格式
     * @param s 待格式化的字符串
     * @param resultFormat  指定格式
     * @return
     */
    public static String isyyyyYearMMMonth(String s,SimpleDateFormat resultFormat){
        Date parse = null;
        try {
            parse = yyyyYearMMMonth.parse(s);
        }catch (Exception e){
            return "";
        }
        return resultFormat.format(parse);
    }

    /**
     * 格式化形如"yyyy年MM月dd日"的字符串并输出指定格式
     * @param s 待格式化的字符串
     * @param resultFormat  指定格式
     * @return
     */
    public static String isyyyyYearMMMonthdd(String s,SimpleDateFormat resultFormat){
        Date parse = null;
        try {
            parse = yyyyYearMMMonthddDay.parse(s);
        }catch (Exception e){
            return "";
        }
        return resultFormat.format(parse);
    }
}
